package day21;

import java.util.Scanner;

/**
 * 洗牌
 */

/**
 * 洗牌在生活中十分常见，现在需要写一个程序模拟洗牌的过程。现在需要洗2n张牌，从上到下依次是第1张，第2张，第3张一直到第2n张。
 * 首先，我们把这2n张牌分成两堆，左手拿着第1张到第n张(上半堆)，右手拿着第n+1张到第2n张（下半堆)。
 * 接着就开始洗牌的过程，先放下右手的最后一张牌，再放下左手的最后一张牌，接着放下右手的倒数第二张牌，
 * 再放下左手的倒数第二张牌，直到最后放下左手的第一张牌。接着把牌合并起来就可以了。
 * 例如有6张牌，最开始牌的序列是1,2,3,4,5,6。首先分成两组，左手拿着1,2,3;右手拿着4,5,6。
 * 在洗牌过程中按顺序放下了6,3,5,2,4,1。把这六张牌再次合成一组牌之后，我们按照从上往下的顺序看这组牌，
 * 就变成了序列1,4,2,5,3,6。现在给出一个原始牌组，请输出这副牌洗牌k次之后从上往下的序列。
 */

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        for(int m = 0;m < num;m++){
            //表示每组牌有多少张
            int n = scanner.nextInt();
            //表示洗多少次
            int k = scanner.nextInt();
            int[] left = new int[n];
            int[] right = new int[n];
            for (int i = 0; i < n; i++) {
                left[i] = scanner.nextInt();
            }
            for (int i = 0; i < n; i++) {
                right[i] = scanner.nextInt();
            }
            int[] end = Shufflethedeck(left,right,k);
            //System.out.println();
            for(int j = 0;j < 2*n;j++)
            {
                if(j == 2*n - 1)
                {
                    System.out.println(end[j]);
                }
                else{
                    System.out.print(end[j] + " ");
                }
            }
        }
    }

    private static int[] Shufflethedeck(int[] left, int[] right, int k) {
        int[] endnum = new int[left.length * 2];
        //String end = "";
        int index = left.length * 2 - 1;
        for (int i = left.length - 1; i >= 0; i--) {
//            end += right[i];
//            end += left[i];
            endnum[index--] = right[i];
            endnum[index--] = left[i];
        }
        k--;
        if (k == 0){
            return endnum;
        }else {
            int[] l = new int[left.length];
            for (int i = 0; i < left.length; i++) {
                l[i] = endnum[i];
            }
            int[] r = new int[l.length];
            int indexend = left.length;
            for (int i = 0; i < l.length; i++) {
                r[i] = endnum[indexend++];
            }
            return Shufflethedeck(l,r,k);
        }
    }
}